package com.zrrd.learn.chapter07字符串;

import java.util.Random;

/**
 * 字符串练习题
 *
 * @author wrn
 * @version 1.0
 * @date 2023/7/19 14:02
 */

public class StringExerciseTwo02 {

    /**
     * 1、定义一个数组内容为{1,2,3}.定义两个String类型内容为hello与world。要求输出结果为：[word1#word2#word3]。
     */
    public static String question01(int[] arr) {
        StringBuilder stringBuilder = new StringBuilder("[");
        for (int i = 0; i < arr.length; i++) {
            stringBuilder.append("word").append(arr[i]).append("#");
        }
        return stringBuilder.append("]").toString();
    }

    /**
     * 键盘输入一个字符串，并且统计其中各种字符出现的次数。种类有：大写字母、小写字母、数字、其他。
     *
     * @param str
     */
    public static void question02(String str) {

        int bletter = 0;
        int sletter = 0;
        int digit = 0;
        int other = 0;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) >= 'A' && str.charAt(i) <= 'Z') {
                bletter++;
            } else if (str.charAt(i) >= 'a' && str.charAt(i) <= 'z') {
                sletter++;
            } else if (str.charAt(i) >= '0' && str.charAt(i) <= '9') {
                digit++;
            } else {
                other++;
            }
        }
        System.out.println("字符串中\n大写英文字母的个数为" + bletter + "\n小写英文字母的个数为" + sletter + "\n数字的个数为" + digit + "\n其它字符的个数为" + other);
    }

    /**
     * 3、分析以下需求,并用代码实现
     * 键盘录入一个字符串，要求删除该字符串中的所有java字符串（最终的字符串中不能包含java），
     * 要求打印删除后的结果以及删除了几个java字符串比如键盘录入:
     * java woaijava,i like jajavava i enjoy java
     * 程序输出结果:原字符串 woai,i like i enjoy
     * 中总共包含:5 个 java
     * 删除java后的字符串为: woai,i like i enjoy
     *
     * @param str
     */
    public static void question03(String str, String java) {
        int len = str.length();
        while (str.contains(java)) {
            str = str.replace(java, "");
        }
        System.out.println("中总共包含:" + (len - str.length()) / java.length() + "个" + java);
        System.out.println(str);
    }

    /**
     * 4、创建一个一维数组arr(String类型)，
     * 里面元素有{“a”,”s”,”d”,”f”,”a”,”a”,”d”,”2”,”3”,”8”}，
     * 根据里面的元素随机生成一个长度为5的字符串，
     * 将该字符串中相同的元素去重然后再反序输出到控制台上
     */
    public static void question04() {
        String[] arr = {"a", "s", "d", "f", "a", "a", "d", "2", "3", "8"};
        String str = "";
        String newstr = "";
        Random random = new Random();
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (count < 5) {
                count++;
                int index = random.nextInt(10);
                str += arr[index];
            }
        }
        for (int i = 0; i < str.length(); i++) {
            int index = newstr.indexOf(str.charAt(i));
            if (index < 0) {
                newstr += str.charAt(i);
            }
        }
        StringBuilder stringBuilder = new StringBuilder(newstr);
        stringBuilder.reverse();
        System.out.println("随机生成一个长度为5的字符串" + str);
        System.out.println("字符串去重后为" + newstr);
        System.out.println("字符串反序后为" + stringBuilder);
    }

    /**
     * 5、按需求完成指定功能，题目如下：
     * (1)打印由7，8，9三个数组组成的三位数，要求该三位数中任意两位数字不能相同
     * (2)打印格式最后的三位数字以空格分隔，如789 798 879 897 978 987
     */
    public static void question05() {
        int[] arr = {7, 8, 9};
        for (int i = 0; i < arr.length; i++) {
            int first = 0;
            int second = 0;
            switch (i) {
                case 0:
                    first = i + 1;
                    second = i + 2;
                    break;
                case 2:
                    first = i - 1;
                    second = i - 2;
                    break;
                default:
                    first = i - 1;
                    second = i + 1;
            }
            if (i == 0) {
                System.out.printf("%d %d %d\t", arr[i], Math.max(arr[first], arr[second]), Math.min(arr[first], arr[second]));
                System.out.printf("%d %d %d\t", arr[i], Math.min(arr[first], arr[second]), Math.max(arr[first], arr[second]));
            }

        }
    }

    /**
     * 6、按需求完成指定功能，题目如下：
     * (1)定义数字字符串数组{“010”,“3223”,“666”,“7890987”,“123123”}
     * (2)判断该数字字符串数组中的数字字符串是否是对称(第一个数字和最后一个数字相等，第二个数字和倒数第二个数字是相等的，依次类推)的，并逐个输出
     * (3)如：010 是对称的，3223 是对称的，123123 不是对称的
     */
    public static void quesion06() {

        String[] strs = {};
        for (int i = 0; i < strs.length; i++) {

        }
    }

    static char c;

    public static void main(String[] args) {
        int[] arr ={1,2,3};
        System.out.println(question01(arr));
//        System.out.println("第二题");
//        System.out.println("请输入一个字符串：");
//        Scanner scan = new Scanner(System.in);
//        String s = scan.nextLine();
//        question02(s);

//        System.out.println("第三题");
//        System.out.println("请输入一个字符串1：");
//        Scanner scann = new Scanner(System.in);
//        String str = scann.nextLine();
//        System.out.println("请输入一个字符串2：");
//        Scanner scannn = new Scanner(System.in);
//        String java = scann.nextLine();
//        question03(str,java);

//        question04();
//        question05();


    }

}
